// 用户规则模块

// 引入mongoose数据库操作模块
const mongoose = require('mongoose');

// 创建规则
const userSchema = new mongoose.Schema({
    // 用户姓名
    username: {
        type: String,
        minlength: [2, '请传入至少两个字符长度的名字！'],
        maxlength: [10, '名字的长度最多是10个字符'],
        required: [true, '名字是必填项'],
        trim: true,
        validate: {
            validator: v => {
                let regex = /^[\u4E00-\u9FA5A-Za-z0-9_]+$/;
                // 返回布尔值
                // true 验证成功
                // false 验证失败
                // v 要验证的值
                return v.match(regex);
            },
            // 自定义错误信息
            message: '传入的名字不合法！'
        }
    },
    // 用户邮箱
    email: {
        type: String,
        required: [true, '邮箱是必填项！'],
        unique: [true, '邮箱地址重复'],
        trim: true,
        validate: {
            validator: v => {
                let regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                // 返回布尔值
                // true 验证成功
                // false 验证失败
                // v 要验证的值
                return v.match(regex);
            },
            // 自定义错误信息
            message: 'email不合法！'
        }
    },
    // 用户密码
    password: {
        type: String,
        trim: true
    },
    // 用户角色
    // 角色默认为普通角色normal
    role: {
        type: String,
        default: 'normal',
        enum: {
			values: ['normal', 'admin'],
			message: '角色要在一定范围内选择'
		}
    },
    // 用户状态
    // 0 - 启用
    // 1 - 禁用
    state: {
        type: String,
        trim: true,
        default: '0',
        enum: {
			values: ['0', '1'],
			message: '用户状态要在一定范围内选择'
		}
    }
});

// 引用规则
const User = mongoose.model('User', userSchema);

// 导出规则
module.exports = User;